// 通用函数：显示提示消息
function showAlert(message, type = 'success') {
    const alertHtml = `
        <div class="alert alert-${type} alert-dismissible fade show">
            ${message}
            <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
        </div>
    `;
    const alertContainer = document.createElement('div');
    alertContainer.innerHTML = alertHtml;
    document.querySelector('main').insertBefore(alertContainer.firstChild, document.querySelector('main').firstChild);
}

// 通用函数：确认对话框
function confirmAction(message) {
    return confirm(message);
}

// 通用函数：格式化金额
function formatMoney(amount) {
    return new Intl.NumberFormat('zh-CN', {
        style: 'currency',
        currency: 'CNY'
    }).format(amount);
}

// 通用函数：格式化日期时间
function formatDateTime(dateTime) {
    return new Date(dateTime).toLocaleString('zh-CN');
}

// 购物车相关函数
const cart = {
    // 添加到购物车
    addToCart: function(productId, quantity) {
        $.post('/employee/cart/add', {
            productId: productId,
            quantity: quantity
        })
        .done(function(response) {
            if (response === 'success') {
                showAlert('商品已添加到购物车');
            } else {
                showAlert(response, 'danger');
            }
        })
        .fail(function() {
            showAlert('添加失败，请稍后重试', 'danger');
        });
    },

    // 更新购物车数量
    updateQuantity: function(cartId, quantity) {
        $.post(`/employee/cart/${cartId}/update`, {
            quantity: quantity
        })
        .done(function(response) {
            if (response === 'success') {
                location.reload();
            } else {
                showAlert(response, 'danger');
            }
        })
        .fail(function() {
            showAlert('更新失败，请稍后重试', 'danger');
        });
    },

    // 从购物车移除
    removeFromCart: function(cartId) {
        if (confirmAction('确定要从购物车中移除此商品吗？')) {
            $.post(`/employee/cart/${cartId}/remove`)
            .done(function(response) {
                if (response === 'success') {
                    location.reload();
                } else {
                    showAlert(response, 'danger');
                }
            })
            .fail(function() {
                showAlert('移除失败，请稍后重试', 'danger');
            });
        }
    }
};

// 订单相关函数
const order = {
    // 取消订单
    cancelOrder: function(orderId) {
        if (confirmAction('确定要取消此订单吗？')) {
            $.post(`/employee/orders/${orderId}/cancel`)
            .done(function(response) {
                if (response === 'success') {
                    location.reload();
                } else {
                    showAlert(response, 'danger');
                }
            })
            .fail(function() {
                showAlert('取消失败，请稍后重试', 'danger');
            });
        }
    },

    // 确认收货
    confirmReceipt: function(orderId) {
        if (confirmAction('确定已收到商品吗？')) {
            $.post(`/employee/orders/${orderId}/confirm`)
            .done(function(response) {
                if (response === 'success') {
                    location.reload();
                } else {
                    showAlert(response, 'danger');
                }
            })
            .fail(function() {
                showAlert('确认失败，请稍后重试', 'danger');
            });
        }
    },

    // 发货
    shipOrder: function(orderId) {
        if (confirmAction('确定要发货吗？')) {
            $.post(`/farmer/orders/${orderId}/ship`)
            .done(function(response) {
                if (response === 'success') {
                    location.reload();
                } else {
                    showAlert(response, 'danger');
                }
            })
            .fail(function() {
                showAlert('发货失败，请稍后重试', 'danger');
            });
        }
    }
};

// 管理员相关函数
const admin = {
    // 审核用户
    auditUser: function(userId, status) {
        const action = status === 1 ? '通过' : '拒绝';
        if (confirmAction(`确定要${action}此用户的注册申请吗？`)) {
            $.post(`/admin/users/${userId}/audit`, {
                status: status
            })
            .done(function(response) {
                if (response === 'success') {
                    location.reload();
                } else {
                    showAlert(response, 'danger');
                }
            })
            .fail(function() {
                showAlert('操作失败，请稍后重试', 'danger');
            });
        }
    },

    // 审核商品
    auditProduct: function(productId, status) {
        const action = status === 1 ? '通过' : '拒绝';
        if (confirmAction(`确定要${action}此商品吗？`)) {
            $.post(`/admin/products/${productId}/audit`, {
                status: status
            })
            .done(function(response) {
                if (response === 'success') {
                    location.reload();
                } else {
                    showAlert(response, 'danger');
                }
            })
            .fail(function() {
                showAlert('操作失败，请稍后重试', 'danger');
            });
        }
    },

    // 充值余额
    rechargeBalance: function(userId) {
        const amount = prompt('请输入充值金额：');
        if (amount && !isNaN(amount) && amount > 0) {
            $.post(`/admin/users/${userId}/recharge`, {
                amount: amount
            })
            .done(function(response) {
                if (response === 'success') {
                    location.reload();
                } else {
                    showAlert(response, 'danger');
                }
            })
            .fail(function() {
                showAlert('充值失败，请稍后重试', 'danger');
            });
        } else if (amount !== null) {
            showAlert('请输入有效的金额', 'danger');
        }
    }
};

// 页面加载完成后执行
$(document).ready(function() {
    // 初始化所有工具提示
    var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
    tooltipTriggerList.map(function (tooltipTriggerEl) {
        return new bootstrap.Tooltip(tooltipTriggerEl);
    });

    // 初始化所有弹出框
    var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'));
    popoverTriggerList.map(function (popoverTriggerEl) {
        return new bootstrap.Popover(popoverTriggerEl);
    });

    // 自动隐藏提示消息
    setTimeout(function() {
        $('.alert').alert('close');
    }, 5000);
}); 